﻿using System;
using System.Collections.Generic;
using ReAnimation.Domain;
using ReAnimation.Helpers.WinForms;

namespace ReAnimation.MVP.Models.Interfaces
{
    public interface IMainModel
    {
        Animation CurrentAnimation { get; set; }
        AnimationStep CurrentAnimationStep { get; set; }
        Molecule CurrentMolecule { get; set; }

        event EventHandler CurrentAnimationChanged;
        event EventHandler CurrentAnimationStepChanged;
        event EventHandler CurrentAnimationStepsChanged;
        event EventHandler CurrentAnimationStepPercentChanged;
        event EventHandler CurrentMoleculeChanged;
        event EventHandler CurrentMoleculeStructureChanged;
        event EventHandler CurrentMoleculeTransformMatrixChanged;
        event EventHandler CurrentMoleculeZMatrixChanged;
        event EventHandler<EventArg<Molecule>> MoleculeAdded;
        event EventHandler<EventArg<Molecule>> MoleculeRemoved;
        event EventHandler MoleculesCollectionChanged;


        void CurrentMoleculeStructureWasModified();
        void CurrentMoleculeZMatrixWasModified();
    }
}